(function(funcName, baseObj) { "use strict"; // The public function name defaults to window.docReady // but you can modify the last line of this function to pass in a different object or method name // if you want to put them in a different namespace and those will be used instead of // window.docReady(...) funcName = funcName || "docReady"; baseObj = baseObj || window; var readyList = []; var readyFired = false; var readyEventHandlersInstalled = false; // call this when the document is ready // this function protects itself against being called more than once function ready() { if (!readyFired) { // this must be set to true before we start calling callbacks readyFired = true; for (var i = 0; i < readyList.length; i++) { // if a callback here happens to add new ready handlers, // the docReady() function will see that it already fired // and will schedule the callback to run right after // this event loop finishes so all handlers will still execute // in order and no new ones will be added to the readyList // while we are processing the list readyList[i].fn.call(window, readyList[i].ctx); } // allow any closures held by these functions to free readyList = []; } } function readyStateChange() { if ( document.readyState === "complete" ) { ready(); } } // This is the one public interface // docReady(fn, context); // the context argument is optional - if present, it will be passed // as an argument to the callback baseObj[funcName] = function(callback, context) { // if ready has already fired, then just schedule the callback // to fire asynchronously, but right away if (readyFired) { setTimeout(function() {callback(context);}, 1); return; } else { // add the function and context to the list readyList.push({fn: callback, ctx: context}); } // if document already ready to go, schedule the ready function to run // IE only safe when readyState is "complete", others safe when readyState is "interactive" if (document.readyState === "complete" || (!document.attachEvent && document.readyState === "interactive")) { setTimeout(ready, 1); } else if (!readyEventHandlersInstalled) { // otherwise if we don't have event handlers installed, install them if (document.addEventListener) { // first choice is DOMContentLoaded event document.addEventListener("DOMContentLoaded", ready, false); // backup is window load event window.addEventListener("load", ready, false); } else { // must be IE document.attachEvent("onreadystatechange", readyStateChange); window.attachEvent("onload", ready); } readyEventHandlersInstalled = true; } } })("docReady", window); // modify this previous line to pass in your own method name // and object for the method to be attached to //k zPlayer som pridal _videoreklama, lebo sa to bilo s videom var zPlayer_videoreklama = { url: { target: "https://www.topky.sk", origin: "https://player.zoznam.sk", base: "https://player.zoznam.sk/", jQuery: "https://cdn.player.zoznam.sk/js/jquery-1.11.3.min.js?20161001", }, loader: function() { if(window.jQuery) { zPlayer_videoreklama.init(); } else { zPlayer_videoreklama.addScript(zPlayer_videoreklama.url.jQuery, "js", zPlayer_videoreklama.init); } }, init: function() { $(window).resize(function(e) { zPlayer_videoreklama.onResize(); }); zPlayer_videoreklama.render(); zPlayer_videoreklama.recieveMessage(); }, render: function() { //ziskanie PID var failPixelUrl = "https://recycle.zoznam.sk/count.fcgi?cid=64117&gid=135239&bid=178051&pid=0"; var pid = document.querySelector("#zPlayerVideoReklama").getAttribute("src").match(/pid=(\d+)/); if(pid && pid.length === 2) { pid = pid[1]; failPixelUrl = failPixelUrl.replace(/pid=0/, "pid=" + pid) } else { pid = null; } //kontrola mobilnej verzie if(document.location.href.match(/^https?:\/\/(?:m|x)\./)) { console.error("zPlayer videoreklama error: mobilna verzia"); new Image().src = failPixelUrl; return false; } //conditions var articleNode = $("#article_body"), paragraphNodes = $("#article_body > p"), paragraphCount = paragraphNodes.length, paragraphMinCount = "3", paragraphAppendAfter = "0", paragraphShortLimit = "180", paragraphMaxNL = "4", forbiddenNodes = ["iframe","embed","object","img","script","video","form"]; // vyhodit prazdne paragraphy for(var i = 0; i < paragraphNodes.length; i++) { if(!paragraphNodes[i].innerHTML.trim().length) { paragraphNodes.splice(i, 1); } } paragraphCount = paragraphNodes.length; // ak nieje zadane po ktorom, zoberie sa stred if(paragraphAppendAfter == 0) { paragraphAppendAfter = parseInt(paragraphCount / 2) } // pr clanok if(articleNode.text().indexOf("Reklamná správa") !== -1 || $("#article-tools").text().indexOf("PR článok") !== -1 || $("#article-tools").text().indexOf("Advertoriál") !== -1 || $("article#article .about").text().indexOf("PR článok") !== -1) { console.error("zPlayer videoreklama error: PR clanok"); new Image().src = failPixelUrl; return false; } // pocet odstavcov if(paragraphCount < paragraphMinCount) {console.log(paragraphNodes, paragraphCount, paragraphMinCount); console.error("zPlayer videoreklama error: V clanku nieje dost odstavcov"); new Image().src = failPixelUrl; return false; } // skontrolovat povolene elementy var arr = []; for(var i = 0; i < forbiddenNodes.length; i++) { var forbiddenNode = forbiddenNodes[i], foundForbiddenNodes = articleNode.find(forbiddenNode); if(foundForbiddenNodes.length) { switch(forbiddenNode) { case "img": case "script": { // bypass /* for(var j = 0; j < foundForbiddenNodes.length; j++) { if(foundForbiddenNodes[j].src.indexOf("http://statickemapy.zoznam.sk") !== -1) { arr.push(foundForbiddenNodes[j]); } } */ break; } case "iframe": { for(var j = 0; j < foundForbiddenNodes.length; j++) { //console.log("IFRAME", foundForbiddenNodes[j]); if(foundForbiddenNodes[j].src) { if(foundForbiddenNodes[j].src.indexOf("google.com") === -1 && foundForbiddenNodes[j].src.indexOf("googlesyndication.com") === -1 && foundForbiddenNodes[j].src.indexOf("facebook.com") === -1 && foundForbiddenNodes[j].src.indexOf("disqus.com") === -1) { //console.log("IFRAME SRC", foundForbiddenNodes[j]); arr.push(foundForbiddenNodes[j]); } } else if(foundForbiddenNodes[j].name) { if(foundForbiddenNodes[j].name.indexOf("google_ads_iframe") === -1 && foundForbiddenNodes[j].name.indexOf("aswift_") === -1 && foundForbiddenNodes[j].name.indexOf("dsq-app") === -1) { //console.log("IFRAME NAME", foundForbiddenNodes[j]); arr.push(foundForbiddenNodes[j]); } }/* else if(foundForbiddenNodes[j].title) { if(["fb:like", "fb:like Facebook Social Plugin", "fb:page", "fb:share_button"].indexOf(foundForbiddenNodes[j].title) === -1) { //console.log("IFRAME TITLE", foundForbiddenNodes[j]); arr.push(foundForbiddenNodes[j]); } }*/ else { arr.push(foundForbiddenNodes[j]); } } break; } default: { //console.log("DEFAULT", foundForbiddenNodes); //arr = arr.concat(foundForbiddenNodes); for(var j = 0; j < foundForbiddenNodes.length; j++) { arr.push(foundForbiddenNodes[j]); } break; } } } } //console.log("ARR", arr); if(arr && arr.length) { console.error("zPlayer videoreklama error: V clanku sa nachadza nepovoleny tag ", arr); new Image().src = failPixelUrl; return false; } delete arr; // kontrola br for(var i = 0; i < paragraphNodes.length; i++) { if($(paragraphNodes[i]).find("br").length > paragraphMaxNL && paragraphMinCount > 1) { console.error("zPlayer videoreklama error: V odstavci je viac newline ako je povolene"); new Image().src = failPixelUrl; return false; } } // kontrola dlzky if(parseInt($(paragraphNodes[paragraphAppendAfter]).text().length) < paragraphShortLimit) { console.error("zPlayer videoreklama error: Kratky odstavec"); paragraphAppendAfter--; } //browser check if(window.navigator.userAgent.match(/(Windows NT 5.1|Windows XP|msie [5-7]|Presto)/i)) { console.error("zPlayer video error: Zastaraly OS alebo prehliadac."); new Image().src = failPixelUrl; return false; } // a konecne pridame player // $(document).ready(function() { // vyhodene kvoli vysetrenie.sk, nakolko tam nenastava tento event... var html = ""; html += "
"; html += ""; html += "
"; $(paragraphNodes[paragraphAppendAfter]).after(html); $(window).trigger("resize"); // }); }, onResize: function() { var iframe = $("#zPlayer-video-reklama-iframe"), width = parseInt(iframe.parent("div").width()), height = parseInt(width / 16 * 9) + 2 * 30; // 2 * 30 - pred a po playeri iframe.css({ "width": width + "px", "height": height + "px", "border": 0 }); }, onScroll: function() { var playerIframe = $("#zPlayer-video-reklama-iframe"), playerHeight = playerIframe.height(), playerOffset = playerIframe.offset().top, windowHeight = $(window).height(), windowOffset = $(document).scrollTop(), action = null; if(playerOffset + playerHeight / 2 > windowOffset && playerOffset + playerHeight / 2 - windowHeight < windowOffset) { action = "play"; } else { action = "pause"; } if(action) { zPlayer_videoreklama.postMessage({ method: action, params: true }); } }, onPlayerReady: function() { zPlayer_videoreklama.onScroll(); $(window).scroll(function(e) { zPlayer_videoreklama.onScroll(); }); }, onImpression: function() { if(typeof window.zPlayerExternalImpression === "function") { window.zPlayerExternalImpression(); } }, lastMessage: null, postMessage: function(obj) { if(JSON.stringify(zPlayer_videoreklama.lastMessage) != JSON.stringify(obj)) { document.getElementById("zPlayer-video-reklama-iframe").contentWindow.postMessage(obj, zPlayer_videoreklama.url.origin); zPlayer_videoreklama.lastMessage = obj; } }, recieveMessage: function() { window.addEventListener("message", function(e) { if(e.origin !== zPlayer_videoreklama.url.origin) { return; } if(typeof e.data.method === "string" && typeof zPlayer_videoreklama[e.data.method] === "function" && ["onPlayerReady", "onImpression"].indexOf(e.data.method) !== false) { zPlayer_videoreklama[e.data.method](e.data.params || null); } }); }, addScript: function(filename, filetype, callback) { if(typeof filename !== "undefined") { if(filename.indexOf("http") === -1) { filename = zPlayer_videoreklama.url.base + filename; } if(filetype == "js") { var fileref = document.createElement("script"); fileref.setAttribute("type", "text/javascript"); fileref.setAttribute("src", filename); if(typeof callback === "function") { fileref.onload = callback; } } else if(filetype == "css") { var fileref=document.createElement("link"); fileref.setAttribute("rel", "stylesheet"); fileref.setAttribute("type", "text/css"); fileref.setAttribute("href", filename); } if(typeof fileref !== "undefined") { document.getElementsByTagName("head")[0].appendChild(fileref); } } } }; window.docReady(zPlayer_videoreklama.loader);